using UnityEngine;
using TMPro; // 引入TextMeshPro命名空间

public class EnemyFX : MonoBehaviour
{
    [SerializeField] private Transform textDamageSpawnPosition; // 伤害数字显示位置

    private Enemy _enemy; // 敌人对象

    private void Awake()
    {
        _enemy = GetComponent<Enemy>(); // 获取敌人组件
    }

    // 敌人受到攻击时的处理方法
    private void EnemyHit(Enemy enemy, float damage)
    {
        if (_enemy == enemy) // 判断是否为当前敌人
        {
            GameObject newInstance = DamageTextManager.Instance.Pooler.GetInstanceFromPool(); // 从对象池中获取伤害数字的实例
            TextMeshPro damageText = newInstance.GetComponent<DamageText>().DmgText; // 获取伤害数字的Text组件
            damageText.text = damage.ToString(); // 设置显示的伤害数值
            newInstance.transform.SetParent(textDamageSpawnPosition); // 设置父物体为伤害数字显示位置
            newInstance.transform.position = textDamageSpawnPosition.position; // 设置显示位置
            newInstance.SetActive(true); // 激活显示
        }
    }

    private void OnEnable()
    {
        Projectile.OnEnemyHit += EnemyHit; // 注册敌人被攻击事件的监听
    }

    private void OnDisable()
    {
        Projectile.OnEnemyHit -= EnemyHit; // 取消注册敌人被攻击事件的监听
    }
}
